// Author: Bjorn Schobben


#ifndef TEXTUREMANAGER_H
#define TEXTUREMANAGER_H

#include "Texture.h"
#include "Pixel.h"
#include <vector>

class TextureManager
{
public:
	//Constructors
    TextureManager();
	TextureManager(const TextureManager& rhs);

	//Destructor
    virtual ~TextureManager();

	bool ValidIndex(unsigned int tindex);

	const Texture& GetEmptyTexture() const;

	unsigned int GetTextureCount() const;
	const Texture& GetTexture(unsigned int tindex) const;
	void ChangeUserColor(unsigned int tindex, const Pixel& userColor);
	
	//Operations to add a texture (either a real picture or just a color) to the texturelist
	virtual unsigned int AddTexture(const Texture& texture);

	//Operation to remove a certain texture from the texturelist
	//void RemoveTexture(Texture* texture);
	virtual void RemoveTexture(unsigned int index);
	
	virtual void Clear();

protected:
	

private:
	Texture emptyTexture;

	std::vector<Texture*> textures;

	static const char *MISSINGTEXTURE;
};

#endif // TEXTUREMANAGER_H
